計算機可以進行數值運算,因此我們需要將單詞或者詞組轉換成數字,才能進行存入計算機進行計算機。
那麼,要如何將文字轉化成數字呢?
One-hot Encoding
比如說有藍色,綠色,白色三個詞彙。那麼就生成一個三維向量。每個詞佔向量裡面的一個位置,藍色:[1,0,0] 、綠色:[0,1,0]及白色:[0,0,1]。那麼,假如現在一篇文章有1000個單詞,那麼每個詞彙就要用一個1000維的向量來表述,其中只有單詞所在的位置是1,其餘位置全部是0,每個單詞向量之間是無關的。這樣做的好處是簡單,但是不太符合現實情況。它忽略了單詞之間的相關性,無法進行分類,比如藍色和綠色都是熱門的顏色,但在種編碼下,是兩個無相關的詞彙。
Word Embedding
假設現在有一篇文章有1000個單詞,但是我們現在不用1000維來表示,而是把這1000個單詞映射到100維或者其他較小的維度,然後每個單詞就是一個100維的向量。每個向量並不像one-hot方法那樣都是稀疏的,而是都有具體的值。如下圖所示,將這幾個單詞映射到2維空間。我們可以看到,映射後的兩個單詞如果在語義上比較相近,比如run和jump,都是動詞,dog和rabbit都是動物。那麼著兩個單詞的詞向量(單詞所在的點與原點連接的直線所在的向量)就離得比較近。這樣做的好處就是同義詞或者時態不同的詞它們的詞向量就會很接近,保留了文章的語義。
Reference
淺談詞嵌入
人必須有一個「非我」作參照物,才能了解何謂「自我」- 黑格爾